#pragma once
#include "Vector2.h"
#include "ColorValue.h"
#include "Texture.h"
class Material
{
private:
	
	// Influence diffusion effect. Higher value, less diffusion effect. 
	float _reflectivity;

	float _refractiveIndex;

    // for specular
    //float m_mass;

	float _alpha;

    ColorValue m_color;

	Texture* _texture;

public:
	const static Material Air;
	const static Material Wall;

public:
	Material(void);
	Material(ColorValue& color, float alpha, float reflectivity, float refractiveIndex, float mass, Texture* texture);
	virtual ~Material(void);

	float GetAlpha()
    {
        return _alpha;
	}
    void SetAlpha(float alpha)
    {
        _alpha = alpha;
    }

//     void SetMass(float mass)
//     {
//         m_mass = mass;
//     }
// 
//     float GetMass()
//     {
//         return m_mass;
//     }
	void SetRefractiveIndex(float refractiveINdex)
	{
		_refractiveIndex = refractiveINdex;
	}

	float GetRefractiveIndex()
	{
		return _refractiveIndex;
	}

	void SetReflectivity(float reflectivity)
	{
		_reflectivity = reflectivity;
	}

	float GetReflectivity()
    {
        return _reflectivity;
	}

    void SetColor(ColorValue& color)
    {
        m_color = color;
    }


	ColorValue GetColor(Vector2& textureCoordinate);
};

